System.Drawing
var input = File.ReadAllLines(Path.Combine(Path.GetDirectoryName(Util.CurrentQueryPath), "..", "day12.txt"));
var progs = input.Select(i => i.Split(new[] { "<->" }, StringSplitOptions.None)).ToDictionary(i => int.Parse(i[0]), i => i[1].Split(',').Select(o => int.Parse(o)).ToArray());
void findGroup(int prog, List group)
{
if (group.Contains(prog))
return;
group.Add(prog);
foreach (var p in progs[prog])
findGroup(p, group);
}
var part1 = new List();
findGroup(0, part1);
part1.Count().Dump();
var part2 = new List> { part1 };
foreach (var prog in progs.Keys)
{
if (part2.Any(p => p.Contains(prog)))
continue;
var g = new List();
findGroup(prog, g);
part2.Add(g);
}
part2.Count().Dump();